Методичка для первого курса, второй семестр, радиотехнических специальностей.

Язык на котором ведется изложение - С (консольные программы)
Выбранный инструмент - Микрософт Визуал С 2008 Экспресс (бесплатный) русский
(потому что 1)все равно 2) бесплатный 3) русская оболочка )

29 06 2009, Tish:
По поводу инструмента.
Прохожу встроенный туториал. Создание консольного приложения, отладка... Все как по писанному.
Дошли до Развертывание программы (C++). Болт - нет пункта в меню.
Проблема с русской версией: не знаю что смотреть в Интернете!
Поискал поискал... Русскоязычные форумы почти пустые. Как переключиться в англоязычный? Просто поиском по МСДН... Нашел на форумах:
Короче, нет там этого куска. Хуже того - даже если EXEшник сделать то на другой машине он не запустится (даже с установленными NET framework) (я так понял, но надо попробовать)
Можем ли мы без этого жить?
Есть какие то танцы с бубном вместо этого How to: Deploy using XCopy
Нужны ли нам дополнительные танцы?
Подробнее почитайте тут - чего там нет и для чего оно НЕ подходит.
VC++ Novice: What's the Visual C++ Express Edition? (типа "при использованиее в учебном процессе готовьтесь к проблемам", список в тексте)
В связи с этим - надо ли оно нам или поищем чего нибудь менее капризное?

Участники - МАТ, ТИГ и Тиш (Tish)

Рабочее название

Основы алгоритмизации


Структура

  1. Описание языка
    • в минимальном объеме "только чтоб работало", на уровне "поверьте мне на слово, так лучше". За подробностями - в лекции и литературу.
    1. Структура С программы. Пример программы типа "Здравствуй, дерево". Чувствительность к регистру, точки с запятой, скобки и операторные скобки.
    2. все переменные необх объявлять, =>Типы данных (хотя бы какими пользуемся. То есть int long double char void и строка )
    3. Подключение библиотек (заголовочных файлов) - вв/выв и математика. Запись выражений, с граблями (деление нацело, переполн целого)
    4. Пример программы с вводом - выводом. Подробнее о форматном выводе printf. О указателях в scanf.
    5. Операторы управления - ветвление
    6. Циклы
    7. Массивы
    8. Ф-ции. Обр вн на использование указателя чтоб передать значение (брр)
    9. Использование указателя на ф-цию - использование QSORT
    10. Работа со строками
    11. Работа с последов. файлами
(ай много написалось!)

  1. Примеры
    • разобранные все?? 10 лабораторных работ, на уровне достаточном чтоб разобраться без лекции
    • для каждой работы:
    1. достаточные элементы теории (?? - или это надо дать в части Описание языка, а здесь дать ссылку на нужные пункты)
    2. постановка задачи
    3. для тех где надо - блок схема (еще не придумали каким инструментом, но лучше бы бесплатным и конечно векторным)
    4. программа на С
  2. Задания
    • таблицы с индивидуальными заданиями. Штук по 20 минимум (а может и больше, если хватит пороху)
  3. Приложения
    • все что не влезло в описание но хочется упомянуть ;))
    1. Структура стандартной библиотеки АКА "что где искать"
    2. стандартные (используемые) ф-ции
    3. стандартные грабли при записи арифм выражений

Примерный список лабораторных работ:

( 0.) Работа "Здравствуй дерево" - структура программы, подключение заголовочного файла, описание переменных, ввод/вывод - и вообще набрать программу и заставить ее работать в используемой оболочке
  1. Развтвления
    • пара вариантов, один - типа графическое задание фции или геометрич задача на попадание точки в область
    • второй - на множественный выбор (switch)
  2. Табулирование функций одной переменной
    • туда же идет все про набор формул и хитрости (и грабли) с ними связанные
    • плюс элементарные операции в цикле - сумма, произв, среднее, счетчик, мин, макс
  3. Массив
    • Комбинированные операции в цикле - результат получается как, скажем, отношение величин которые надо вычислить отдельно,
    • причем вычисление величин - это элементарная операция в цикле, но по массиву с наложенным фильтром (типа "только отрицательные")
    • (Итого задание выглядит примерно как найти "отношение суммы отрицательных к наименьшему положительному")
  4. Табулирование функций двух переменных
    • здесь усложненные варианты типа найти "сумму для каждого Х" или "наименьшее для каждого Y"
  5. Матрица
    • здесь работа с элементами матрицы - строками, диагоналями, треугольниками
  6. Подпрограммы1
    • (~)подпрограмма табулирует ф-цию, мы вызываем ее три раза
  7. Подпрограммы2
    • Подпрограмма обрабатывающая массивы (?) - мин, макс, сумма, произв. Задача с точками.
  8. Строки
  9. Сортировки (сдвинуто после строк чтоб можно было разнообразить задания)
    • сортировка пузырьком, выбором и использование библиотечного QSORT'а
  10. Работа с файлами (возможно будет полуобязательным заданием, для "продвинутых")
    • с последовательными файлами, как с текстом. Варианты:
    • ввод и обработка массива (расчет)
    • ввод и обработка массива (сортировка)
    • ввод и обработка текста (...)

НЕПОНЯТНО

куда девать вещи, ктоторые знать надо, но к лабораторкам которые не привязаны,
в частности:
  • более полное изложение типов. Включая беззнаковость и создание структур.
  • указатели (а какой это С без указателей?) Хотя, оно им надо?
  • Операторы (есть подозрение что все давать не стоит, всякий там битовый сдвиг)
  • идиомы языка (ясно что "i++" объяснить надо, не ясно когда)
  • разбиение программы на отдельные единицы компиляции, видимость переменных, external и static
(не уверен что сам это понимаю, и студентам на 1м курсе это не надо точно. А надо будет наверно в 4м семестре, на моделировании)